package com.lancoo.edu.platform.operation.commons.utils;


import com.lancoo.edu.platform.operation.commons.domain.api.user.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.Objects;

/**
 * @author: lzh
 * @Description: 获取当前用户信息工具类
 */
@Slf4j
public class CurrentUserUtil {


    private final static ThreadLocal<UserInfo> THREAD_LOCAL = new ThreadLocal<>();

    /**
     * 获取当前线程的用户信息
     * @return 当前用户
     */
    public static UserInfo getCurrentUser(){
        UserInfo userInfo = THREAD_LOCAL.get();
        if (Objects.isNull(userInfo) || StringUtils.isBlank(userInfo.getUserId())){
            log.error("【获取当前用户信息失败：未登录】");
            return null;
        }
        return userInfo;
    }


    /**
     * 注入当前用户信息到当前线程
     * @param userInfo 用户信息
     */
    public static void injectCurrentUser(UserInfo userInfo){
        // 一个线程只有一个用户
        THREAD_LOCAL.remove();
        // 注入当前用户
        THREAD_LOCAL.set(userInfo);
    }

}
